/*
package cn.whb.hrm.service.impl;

import cn.whb.hrm.constant.CourseConstant;
import cn.whb.hrm.domain.CourseType;
import cn.whb.hrm.mapper.CourseTypeMapper;
import cn.whb.hrm.service.ICourseTypeService;
import cn.whb.hrm.util.AjaxResult;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

*/
/**
 * <p>
 * 课程目录 服务实现类
 * </p>
 *
 * @author whb
 * @since 2021-12-20
 *//*

@Service
public class CourseTypeServiceImpl_springcache extends ServiceImpl<CourseTypeMapper, CourseType> implements ICourseTypeService {

    @Autowired
    private CourseTypeMapper typeMapper;


    @Override
    @Cacheable(cacheNames = CourseConstant.COURSE_TYPE_DATA,key = "'typedata'")
    public AjaxResult treeData() {
       */
/* //利用SQL嵌套查询
        List<CourseType> result = typeMapper.treeData();*//*

        List<CourseType> result= getTreeData();

        return AjaxResult.me().setResultObj(result);
    }


    @Override
    @CacheEvict(cacheNames = CourseConstant.COURSE_TYPE_DATA,key = "'typedata'")
    public boolean insert(CourseType entity) {
        //删除缓存中的数据
        return super.insert(entity);
    }

    @Override
    @CacheEvict(cacheNames = CourseConstant.COURSE_TYPE_DATA,key = "'typedata'")
    public boolean deleteById(Serializable id) {
        //删除缓存中的数据
        return super.deleteById(id);
    }

    @Override
    @CacheEvict(cacheNames = CourseConstant.COURSE_TYPE_DATA,key = "'typedata'")
    public boolean updateById(CourseType entity) {
        //删除缓存中的数据
        return super.updateById(entity);
    }

    private List<CourseType> getTreeData() {
        List<CourseType> result = new ArrayList<>();
        //利用SQL查询到所有的courseType
        List<CourseType> list = typeMapper.selectList(null);
        Map<Long, CourseType> map = new HashMap<>();
        for(CourseType type:list){
            //建立每一个courseType和其id的关系
            map.put(type.getId(),type);
        }
        //遍历list
        for(CourseType type:list){
            //封装成嵌套的结构
            if(type.getPid()==0){//先找到第一层pid=0
                result.add(type);
            }else {
                Long pid = type.getPid();
                CourseType parent = map.get(pid);//找到他的父亲
                List<CourseType> children = parent.getChildren();
                children.add(type); //将自己放到父亲的children中
            }
        }
        return result;
    }
}
*/
